package test.n00300;


import static utils.Tools.listOf;

public class Problem00340 {
    public static void main(String[] args) {
        println(new int[]{5, 7, 7, 8, 8, 10}, 8);
    }

    public static void println(int[] nums, int target) {
        Solution ss = new Solution();
        System.out.println(listOf(nums) + "," + target + "," + listOf(ss.searchRange(nums, target)));
    }

    private static class Solution {
        /**
         * 给定一个按照升序排列的整数数组 nums，和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
         * <p>
         * 如果数组中不存在目标值 target，返回 [-1, -1]。
         * <p>
         * 来源：力扣（LeetCode）
         * 链接：https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array
         * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
         *
         * @param nums
         * @param target
         * @return
         */
        public int[] searchRange(int[] nums, int target) {
            int left = -1;
            for (int i = 0; i < nums.length; i++) {
                if (left == -1 && target == nums[i]) {
                    left = i;
                }
            }

            if (left == -1) {
                return new int[]{-1, -1};
            }

            int right = left;
            while (right + 1 < nums.length) {
                if (target == nums[right + 1]) {
                    right++;
                } else {
                    break;
                }
            }
            return new int[]{left, right == -1 ? left : right};
        }
    }
}
